home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 …ember: Reference Library / Apple Developer Reference Library (December 1999) (Disk 1).iso / pc / technical documentation / develop / develop issue 24 / develop issue 24 code / new device drivers / PCI Driver Sample / NCR_DriverProject / Src / DriverPrepRequest.c < prev    next >
MacBinary  |  1995-07-24  |  10.6 KB  |  [TEXT/MPCC]

open in: MacOS 8.1     |     Win98     |     DOS

browse contents    |     view JSON data     |     view as text


This file was processed as: MacBinary (archive/macBinary).

ConfidenceProgramDetectionMatch TypeSupport
66% dexvert Compact Compressed (Unix) (archive/compact) ext Supported
10% dexvert MacBinary (archive/macBinary) fallback Supported
1% dexvert Text File (text/txt) fallback Supported
100% file MacBinary II, inited, Mon Jul 24 17:34:43 1995, modified Mon Jul 24 17:34:43 1995, creator 'MPCC', type ASCII, 10176 bytes "DriverPrepRequest.c" , at 0x2840 410 bytes resource default (weak)
99% file data default
74% TrID Macintosh plain text (MacBinary) default
25% TrID MacBinary 2 default (weak)
100% siegfried fmt/1762 MacBinary (II) default
100% lsar MacBinary default


id metadata
keyvalue
macFileType[TEXT]
macFileCreator[MPCC]



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 13 44 72 69 76 65 72 | 50 72 65 70 52 65 71 75 |..Driver|PrepRequ|
|00000010| 65 73 74 2e 63 00 00 00 | 00 00 00 00 00 00 00 00 |est.c...|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 54 45 58 54 4d 50 43 | 43 01 00 00 00 00 00 00 |.TEXTMPC|C.......|
|00000050| 00 00 00 00 00 27 c0 00 | 00 01 9a ac 39 c2 73 ac |.....'..|....9.s.|
|00000060| 39 c2 73 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |9.s.....|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 c2 5e 00 00 |........|.....^..|
|00000080| 2f 2a 09 09 09 09 09 09 | 09 09 09 44 72 69 76 65 |/*......|...Drive|
|00000090| 72 50 72 65 70 52 65 71 | 75 65 73 74 2e 63 09 09 |rPrepReq|uest.c..|
|000000a0| 09 09 09 09 09 09 2a 2f | 0d 2f 2a 0d 20 2a 20 44 |......*/|./*. * D|
|000000b0| 72 69 76 65 72 50 72 65 | 70 52 65 71 75 65 73 74 |riverPre|pRequest|
|000000c0| 2e 63 0d 20 2a 20 43 6f | 70 79 72 69 67 68 74 20 |.c. * Co|pyright |
|000000d0| a9 20 31 39 39 34 2d 39 | 35 20 41 70 70 6c 65 20 |. 1994-9|5 Apple |
|000000e0| 43 6f 6d 70 75 74 65 72 | 20 49 6e 63 2e 20 41 6c |Computer| Inc. Al|
|000000f0| 6c 20 72 69 67 68 74 73 | 20 72 65 73 65 72 76 65 |l rights| reserve|
|00000100| 64 2e 0d 20 2a 2f 0d 2f | 2a 09 2e 5f 5f 5f 5f 5f |d.. */./|*.._____|
|00000110| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00000120| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00000130| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00000140| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00000150| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 2e 0d |________|______..|
|00000160| 20 20 09 7c 20 54 68 65 | 73 65 20 72 6f 75 74 69 | .| The|se routi|
|00000170| 6e 65 73 20 6d 61 6e 61 | 67 65 20 74 68 65 20 64 |nes mana|ge the d|
|00000180| 65 74 61 69 6c 73 20 6f | 66 20 63 61 6c 6c 69 6e |etails o|f callin|
|00000190| 67 20 50 72 65 70 61 72 | 65 4d 65 6d 6f 72 79 46 |g Prepar|eMemoryF|
|000001a0| 6f 72 49 4f 20 66 6f 72 | 20 61 20 50 42 52 65 61 |orIO for| a PBRea|
|000001b0| 64 20 6f 72 09 7c 0d 20 | 20 09 7c 20 6f 72 20 50 |d or.|. | .| or P|
|000001c0| 42 57 72 69 74 65 20 72 | 65 71 75 65 73 74 2e 20 |BWrite r|equest. |
|000001d0| 54 68 65 20 70 72 6f 63 | 65 73 73 20 69 73 20 6e |The proc|ess is n|
|000001e0| 6f 72 6d 61 6c 6c 79 20 | 73 74 72 61 69 67 68 74 |ormally |straight|
|000001f0| 66 6f 72 77 61 72 64 2c | 20 62 75 74 20 63 61 6e |forward,| but can|
|00000200| 20 62 65 63 6f 6d 65 09 | 09 7c 0d 20 20 09 7c 20 | become.|.|. .| |
|00000210| 71 75 69 74 65 20 63 6f | 6d 70 6c 65 78 2e 20 54 |quite co|mplex. T|
|00000220| 68 65 20 63 6f 64 65 20 | 66 6c 6f 77 20 66 6f 72 |he code |flow for|
|00000230| 20 73 69 6d 70 6c 65 20 | 74 72 61 6e 73 66 65 72 | simple |transfer|
|00000240| 73 20 69 73 20 61 73 20 | 66 6f 6c 6c 6f 77 73 3a |s is as |follows:|
|00000250| 09 09 09 09 09 7c 0d 20 | 20 09 7c 09 09 31 2e 20 |.....|. | .|..1. |
|00000260| 50 42 52 65 61 64 2f 50 | 42 57 72 69 74 65 20 63 |PBRead/P|BWrite c|
|00000270| 61 6c 6c 73 20 50 72 65 | 70 61 72 65 4e 65 77 44 |alls Pre|pareNewD|
|00000280| 4d 41 54 72 61 6e 73 66 | 65 72 09 09 09 09 09 09 |MATransf|er......|
|00000290| 09 09 7c 0d 20 20 09 7c | 09 09 32 2e 20 50 72 65 |..|. .||..2. Pre|
|000002a0| 70 61 72 65 4e 65 77 44 | 4d 41 54 72 61 6e 73 66 |pareNewD|MATransf|
|000002b0| 65 72 20 63 61 6c 6c 73 | 20 50 72 65 70 61 72 65 |er calls| Prepare|
|000002c0| 4d 65 6d 6f 72 79 46 6f | 72 49 4f 20 61 6e 64 20 |MemoryFo|rIO and |
|000002d0| 50 72 65 70 61 72 65 4e | 65 78 74 44 4d 41 09 09 |PrepareN|extDMA..|
|000002e0| 7c 0d 20 20 09 7c 09 09 | 33 2e 20 4f 6e 20 72 65 ||. .|..|3. On re|
|000002f0| 74 75 72 6e 2c 20 74 68 | 65 20 44 4d 41 20 70 61 |turn, th|e DMA pa|
|00000300| 72 61 6d 65 74 65 72 73 | 20 61 72 65 20 73 65 6e |rameters| are sen|
|00000310| 74 20 74 6f 20 74 68 65 | 20 68 61 72 64 77 61 72 |t to the| hardwar|
|00000320| 65 2e 09 09 09 09 09 7c | 0d 20 20 09 7c 20 54 68 |e......||. .| Th|
|00000330| 65 20 6d 6f 72 65 20 63 | 6f 6d 70 6c 65 78 20 63 |e more c|omplex c|
|00000340| 6f 64 65 20 70 61 74 68 | 73 20 68 61 6e 64 6c 65 |ode path|s handle|
|00000350| 20 74 68 65 20 66 6f 6c | 6c 6f 77 69 6e 67 20 70 | the fol|lowing p|
|00000360| 72 6f 62 6c 65 6d 73 3a | 09 09 09 09 09 09 7c 0d |roblems:|......|.|
|00000370| 20 20 09 7c 09 49 66 20 | 74 68 65 20 75 73 65 72 | .|.If |the user|
|00000380| 20 61 72 65 61 20 69 73 | 20 64 69 73 63 6f 6e 74 | area is| discont|
|00000390| 69 67 75 6f 75 73 2c 20 | 50 72 65 70 61 72 65 4e |iguous, |PrepareN|
|000003a0| 65 78 74 44 4d 41 20 77 | 69 6c 6c 20 62 65 20 72 |extDMA w|ill be r|
|000003b0| 65 2d 63 61 6c 6c 65 64 | 20 66 72 6f 6d 20 74 68 |e-called| from th|
|000003c0| 65 09 7c 0d 20 20 09 7c | 09 09 50 72 69 6d 61 72 |e.|. .||..Primar|
|000003d0| 79 20 49 6e 74 65 72 72 | 75 70 74 20 53 65 72 76 |y Interr|upt Serv|
|000003e0| 69 63 65 20 52 6f 75 74 | 69 6e 65 20 74 6f 20 63 |ice Rout|ine to c|
|000003f0| 6f 6d 70 75 74 65 20 74 | 68 65 20 6e 65 78 74 20 |ompute t|he next |
|00000400| 70 68 79 73 69 63 61 6c | 20 74 72 61 6e 73 66 65 |physical| transfe|
|00000410| 72 09 09 7c 0d 20 20 09 | 7c 09 09 61 72 65 61 20 |r..|. .||..area |
|00000420| 61 6e 64 20 6c 65 6e 67 | 74 68 2e 20 49 6e 20 6d |and leng|th. In m|
|00000430| 61 6e 79 20 64 72 69 76 | 65 72 73 20 74 68 69 73 |any driv|ers this|
|00000440| 20 77 6f 75 6c 64 20 62 | 65 20 70 72 65 2d 70 72 | would b|e pre-pr|
|00000450| 6f 63 65 73 73 65 64 20 | 69 6e 74 6f 20 61 09 09 |ocessed |into a..|
|00000460| 09 7c 0d 20 20 09 7c 09 | 09 64 65 76 69 63 65 2d |.|. .|.|.device-|
|00000470| 73 70 65 63 69 66 69 63 | 20 73 63 61 74 74 65 72 |specific| scatter|
|00000480| 2d 67 61 74 68 65 72 20 | 6c 69 73 74 2e 09 09 09 |-gather |list....|
|00000490| 09 09 09 09 09 09 09 7c | 0d 20 20 09 7c 09 49 66 |.......||. .|.If|
|000004a0| 20 50 72 65 70 61 72 65 | 4d 65 6d 6f 72 79 46 6f | Prepare|MemoryFo|
|000004b0| 72 49 4f 20 64 69 64 20 | 6e 6f 74 20 70 72 65 70 |rIO did |not prep|
|000004c0| 61 72 65 20 74 68 65 20 | 65 6e 74 69 72 65 20 61 |are the |entire a|
|000004d0| 72 65 61 2c 20 69 74 20 | 6d 75 73 74 20 62 65 20 |rea, it |must be |
|000004e0| 72 65 2d 63 61 6c 6c 65 | 64 09 09 7c 0d 20 20 09 |re-calle|d..|. .|
|000004f0| 7c 09 09 74 6f 20 68 61 | 6e 64 6c 65 20 70 61 72 ||..to ha|ndle par|
|00000500| 74 69 61 6c 20 70 72 65 | 70 61 72 61 74 69 6f 6e |tial pre|paration|
|00000510| 2e 20 49 6e 20 74 68 69 | 73 20 63 61 73 65 2c 20 |. In thi|s case, |
|00000520| 74 68 65 20 70 72 69 6d | 61 72 79 20 69 6e 74 65 |the prim|ary inte|
|00000530| 72 72 75 70 74 20 73 65 | 72 76 69 63 65 09 7c 0d |rrupt se|rvice.|.|
|00000540| 20 20 09 7c 09 09 72 6f | 75 74 69 6e 65 20 71 75 | .|..ro|utine qu|
|00000550| 65 75 65 73 20 61 20 53 | 6f 66 74 77 61 72 65 20 |eues a S|oftware |
|00000560| 54 61 73 6b 20 61 6e 64 | 20 65 78 69 74 73 20 74 |Task and| exits t|
|00000570| 68 65 20 69 6e 74 65 72 | 72 75 70 74 20 77 69 74 |he inter|rupt wit|
|00000580| 68 6f 75 74 20 72 65 73 | 74 61 72 74 69 6e 67 09 |hout res|tarting.|
|00000590| 7c 0d 20 20 09 7c 09 09 | 74 68 65 20 64 65 76 69 ||. .|..|the devi|
|000005a0| 63 65 2e 20 57 68 65 6e | 20 74 68 65 20 53 6f 66 |ce. When| the Sof|
|000005b0| 74 77 61 72 65 20 54 61 | 73 6b 20 72 75 6e 73 2c |tware Ta|sk runs,|
|000005c0| 20 69 74 20 63 61 6c 6c | 73 20 50 72 65 70 61 72 | it call|s Prepar|
|000005d0| 65 4d 65 6d 6f 72 79 46 | 6f 72 49 4f 2c 09 09 7c |eMemoryF|orIO,..||
|000005e0| 0d 20 20 09 7c 09 09 72 | 65 2d 63 61 6c 6c 73 20 |. .|..r|e-calls |
|000005f0| 50 72 65 70 61 72 65 4e | 65 78 74 44 4d 41 2c 20 |PrepareN|extDMA, |
|00000600| 61 6e 64 20 71 75 65 75 | 65 73 20 61 20 53 65 63 |and queu|es a Sec|
|00000610| 6f 6e 64 61 72 79 20 49 | 6e 74 65 72 72 75 70 74 |ondary I|nterrupt|
|00000620| 20 68 61 6e 64 6c 65 72 | 20 74 68 61 74 09 09 7c | handler| that..||
|00000630| 0d 20 20 09 7c 09 09 72 | 65 73 74 61 72 74 73 20 |. .|..r|estarts |
|00000640| 49 2f 4f 2e 20 45 72 72 | 6f 72 20 68 61 6e 64 6c |I/O. Err|or handl|
|00000650| 69 6e 67 20 69 6e 20 74 | 68 69 73 20 63 61 73 65 |ing in t|his case|
|00000660| 20 69 73 20 74 72 69 63 | 6b 79 2c 20 61 73 20 61 | is tric|ky, as a|
|00000670| 6e 20 65 72 72 6f 72 20 | 6d 75 73 74 09 09 7c 0d |n error |must..|.|
|00000680| 20 20 09 7c 09 09 63 61 | 75 73 65 20 74 68 65 20 | .|..ca|use the |
|00000690| 64 65 76 69 63 65 20 74 | 6f 20 61 62 6f 72 74 20 |device t|o abort |
|000006a0| 74 68 65 20 74 72 61 6e | 73 66 65 72 20 28 6f 74 |the tran|sfer (ot|
|000006b0| 68 65 72 77 69 73 65 20 | 73 75 62 73 65 71 75 65 |herwise |subseque|
|000006c0| 6e 74 20 74 72 61 6e 73 | 66 65 72 73 09 09 7c 0d |nt trans|fers..|.|
|000006d0| 20 20 09 7c 09 09 77 6f | 6e 27 74 20 62 65 20 73 | .|..wo|n't be s|
|000006e0| 74 61 72 74 65 64 2e 20 | 54 68 69 73 20 69 73 20 |tarted. |This is |
|000006f0| 6e 65 65 64 65 64 20 69 | 66 20 74 68 65 20 70 68 |needed i|f the ph|
|00000700| 79 73 69 63 61 6c 20 6d | 61 70 20 69 73 20 74 6f |ysical m|ap is to|
|00000710| 6f 20 73 6d 61 6c 6c 2c | 20 69 66 20 74 68 65 09 |o small,| if the.|
|00000720| 7c 0d 20 20 09 7c 09 09 | 64 65 76 69 63 65 20 67 ||. .|..|device g|
|00000730| 72 61 6e 75 6c 61 72 69 | 74 79 20 69 73 20 73 6d |ranulari|ty is sm|
|00000740| 61 6c 6c 65 72 20 74 68 | 61 6e 20 74 68 65 20 74 |aller th|an the t|
|00000750| 72 61 6e 73 66 65 72 20 | 6c 65 6e 67 74 68 2c 20 |ransfer |length, |
|00000760| 6f 72 20 2d 2d 20 69 6e | 20 73 6f 6d 65 20 63 61 |or -- in| some ca|
|00000770| 73 65 73 09 7c 0d 20 20 | 09 7c 09 09 69 66 20 61 |ses.|. |.|..if a|
|00000780| 20 76 69 72 74 75 61 6c | 20 6d 65 6d 6f 72 79 20 | virtual| memory |
|00000790| 22 70 61 67 65 20 74 75 | 72 6e 22 20 66 6f 72 63 |"page tu|rn" forc|
|000007a0| 65 73 20 70 61 72 74 69 | 61 6c 20 70 72 65 70 61 |es parti|al prepa|
|000007b0| 72 61 74 69 6f 6e 2e 20 | 42 65 63 61 75 73 65 20 |ration. |Because |
|000007c0| 6f 66 20 74 68 65 09 7c | 0d 20 20 09 7c 09 09 6c |of the.||. .|..l|
|000007d0| 61 74 74 65 72 2c 20 74 | 68 69 73 20 64 72 69 76 |atter, t|his driv|
|000007e0| 65 72 20 4d 55 53 54 20 | 4e 4f 54 20 62 65 20 69 |er MUST |NOT be i|
|000007f0| 6e 20 74 68 65 20 76 69 | 72 74 75 61 6c 20 6d 65 |n the vi|rtual me|
|00000800| 6d 6f 72 79 20 70 61 67 | 69 6e 67 20 70 72 6f 63 |mory pag|ing proc|
|00000810| 65 73 73 2e 09 09 7c 0d | 20 20 09 7c 09 54 68 65 |ess...|.| .|.The|
|00000820| 20 6f 76 65 72 61 6c 6c | 20 61 6c 67 6f 72 69 74 | overall| algorit|
|00000830| 68 6d 20 69 73 20 67 69 | 76 65 6e 20 69 6e 20 74 |hm is gi|ven in t|
|00000840| 68 65 20 64 6f 63 75 6d | 65 6e 74 61 74 69 6f 6e |he docum|entation|
|00000850| 20 6f 66 20 74 68 65 20 | 44 4d 41 20 6c 69 62 72 | of the |DMA libr|
|00000860| 61 72 79 2e 09 09 09 7c | 0d 20 20 09 7c 20 46 75 |ary....||. .| Fu|
|00000870| 6e 63 74 69 6f 6e 73 3a | 09 09 09 09 09 09 09 09 |nctions:|........|
|00000880| 09 09 09 09 09 09 09 09 | 09 09 7c 0d 20 20 09 7c |........|..|. .||
|00000890| 09 50 72 65 70 61 72 65 | 4e 65 77 44 4d 41 54 72 |.Prepare|NewDMATr|
|000008a0| 61 6e 73 66 65 72 09 43 | 61 6c 6c 65 64 20 66 72 |ansfer.C|alled fr|
|000008b0| 6f 6d 20 64 72 69 76 65 | 72 20 6d 61 69 6e 6c 69 |om drive|r mainli|
|000008c0| 6e 65 20 74 6f 20 69 6e | 69 74 69 61 6c 69 7a 65 |ne to in|itialize|
|000008d0| 20 76 61 72 69 61 62 6c | 65 73 20 61 6e 64 09 7c | variabl|es and.||
|000008e0| 0d 20 20 09 7c 09 09 09 | 09 09 09 09 70 72 65 70 |. .|...|....prep|
|000008f0| 61 72 65 20 74 68 65 20 | 66 69 72 73 74 20 44 4d |are the |first DM|
|00000900| 41 20 73 65 71 75 65 6e | 63 65 2e 09 09 09 09 09 |A sequen|ce......|
|00000910| 09 09 7c 0d 20 20 09 7c | 09 50 72 65 70 61 72 65 |..|. .||.Prepare|
|00000920| 4e 65 78 74 44 4d 41 54 | 61 73 6b 09 09 53 6f 66 |NextDMAT|ask..Sof|
|00000930| 74 77 61 72 65 20 54 61 | 73 6b 20 71 75 65 75 65 |tware Ta|sk queue|
|00000940| 64 20 66 72 6f 6d 20 74 | 68 65 20 70 72 69 6d 61 |d from t|he prima|
|00000950| 72 79 20 69 6e 74 65 72 | 72 75 70 74 20 74 6f 09 |ry inter|rupt to.|
|00000960| 09 7c 0d 20 20 09 7c 09 | 09 09 09 09 09 09 63 6f |.|. .|.|......co|
|00000970| 6e 74 69 6e 75 65 20 70 | 72 65 70 61 72 61 74 69 |ntinue p|reparati|
|00000980| 6f 6e 2e 09 09 09 09 09 | 09 09 09 09 7c 0d 20 20 |on......|....|. |
|00000990| 09 7c 09 50 72 65 70 61 | 72 65 4e 65 78 74 44 4d |.|.Prepa|reNextDM|
|000009a0| 41 09 09 09 43 61 6c 6c | 65 64 20 61 66 74 65 72 |A...Call|ed after|
|000009b0| 20 70 72 65 70 61 72 61 | 74 69 6f 6e 20 61 6e 64 | prepara|tion and|
|000009c0| 20 49 2f 4f 20 74 6f 20 | 63 6f 6d 70 75 74 65 20 | I/O to |compute |
|000009d0| 74 68 65 20 6e 65 78 74 | 09 7c 0d 20 20 09 7c 09 |the next|.|. .|.|
|000009e0| 09 09 09 09 09 09 44 4d | 41 20 70 68 79 73 69 63 |......DM|A physic|
|000009f0| 61 6c 20 61 64 64 72 65 | 73 73 20 61 6e 64 20 74 |al addre|ss and t|
|00000a00| 72 61 6e 73 66 65 72 20 | 6c 65 6e 67 74 68 2e 09 |ransfer |length..|
|00000a10| 09 09 09 7c 0d 20 20 09 | 7c 09 43 6f 6e 66 69 67 |...|. .||.Config|
|00000a20| 75 72 65 54 68 69 73 50 | 68 79 73 69 63 61 6c 41 |ureThisP|hysicalA|
|00000a30| 72 65 61 20 50 65 72 66 | 6f 72 6d 73 20 74 68 65 |rea Perf|orms the|
|00000a40| 20 61 63 74 75 61 6c 20 | 61 64 64 72 65 73 73 2f | actual |address/|
|00000a50| 6c 65 6e 67 74 68 20 63 | 6f 6d 70 75 74 61 74 69 |length c|omputati|
|00000a60| 6f 6e 2e 09 09 7c 0d 20 | 20 09 7c 20 50 72 65 70 |on...|. | .| Prep|
|00000a70| 61 72 65 4e 65 78 74 44 | 4d 41 20 72 65 74 75 72 |areNextD|MA retur|
|00000a80| 6e 73 20 61 20 73 74 61 | 74 75 73 20 76 61 6c 75 |ns a sta|tus valu|
|00000a90| 65 20 74 68 61 74 20 63 | 6f 6e 74 72 6f 6c 73 20 |e that c|ontrols |
|00000aa0| 74 68 65 20 63 61 6c 6c | 65 72 3a 09 09 09 09 09 |the call|er:.....|
|00000ab0| 7c 0d 20 20 09 7c 09 6e | 6f 45 72 72 09 09 09 09 ||. .|.n|oErr....|
|00000ac0| 53 75 63 63 65 73 73 3a | 20 73 74 61 72 74 20 28 |Success:| start (|
|00000ad0| 6f 72 20 72 65 73 74 61 | 72 74 29 20 49 2f 4f 09 |or resta|rt) I/O.|
|00000ae0| 09 09 09 09 09 09 09 7c | 0d 20 20 09 7c 09 6b 50 |.......||. .|.kP|
|00000af0| 72 65 70 61 72 65 4d 65 | 6d 6f 72 79 52 65 73 74 |repareMe|moryRest|
|00000b00| 61 72 74 20 41 66 74 65 | 72 20 61 20 70 72 69 6d |art Afte|r a prim|
|00000b10| 61 72 79 20 69 6e 74 65 | 72 72 75 70 74 3a 20 74 |ary inte|rrupt: t|
|00000b20| 68 65 20 66 75 6e 63 74 | 69 6f 6e 20 71 75 65 75 |he funct|ion queu|
|00000b30| 65 64 20 61 20 53 6f 66 | 74 77 61 72 65 09 7c 0d |ed a Sof|tware.|.|
|00000b40| 20 20 09 7c 09 09 09 09 | 09 09 54 61 73 6b 20 74 | .|....|..Task t|
|00000b50| 6f 20 68 61 6e 64 6c 65 | 20 70 61 72 74 69 61 6c |o handle| partial|
|00000b60| 20 70 72 65 70 61 72 61 | 74 69 6f 6e 2e 09 54 68 | prepara|tion..Th|
|00000b70| 65 20 69 6e 74 65 72 72 | 75 70 74 20 72 6f 75 74 |e interr|upt rout|
|00000b80| 69 6e 65 09 7c 0d 20 20 | 09 7c 09 09 09 09 09 09 |ine.|. |.|......|
|00000b90| 73 68 6f 75 6c 64 20 65 | 78 69 74 20 77 69 74 68 |should e|xit with|
|00000ba0| 6f 75 74 20 72 65 73 74 | 61 72 74 69 6e 67 20 49 |out rest|arting I|
|00000bb0| 2f 4f 2e 09 57 68 65 6e | 20 74 68 65 20 53 6f 66 |/O..When| the Sof|
|00000bc0| 74 77 61 72 65 20 54 61 | 73 6b 09 7c 0d 20 20 09 |tware Ta|sk.|. .|
|00000bd0| 7c 09 09 09 09 09 09 63 | 6f 6d 70 6c 65 74 65 73 ||......c|ompletes|
|00000be0| 2c 20 69 74 20 77 69 6c | 6c 20 71 75 65 75 65 20 |, it wil|l queue |
|00000bf0| 6f 75 72 20 53 65 63 6f | 6e 64 61 72 79 20 49 6e |our Seco|ndary In|
|00000c00| 74 65 72 72 75 70 74 20 | 68 61 6e 64 6c 65 72 09 |terrupt |handler.|
|00000c10| 7c 0d 20 20 09 7c 09 09 | 09 09 09 09 77 69 74 68 ||. .|..|....with|
|00000c20| 20 74 68 69 73 20 73 74 | 61 74 75 73 20 74 6f 20 | this st|atus to |
|00000c30| 63 6f 6e 74 69 6e 75 65 | 20 74 68 65 20 49 2f 4f |continue| the I/O|
|00000c40| 20 6f 70 65 72 61 74 69 | 6f 6e 2e 09 09 09 09 7c | operati|on.....||
|00000c50| 0d 20 20 09 7c 09 73 63 | 73 69 44 61 74 61 52 75 |. .|.sc|siDataRu|
|00000c60| 6e 45 72 72 6f 72 09 46 | 61 69 6c 75 72 65 3a 20 |nError.F|ailure: |
|00000c70| 54 68 65 20 49 2f 4f 20 | 74 61 62 6c 65 20 22 64 |The I/O |table "d|
|00000c80| 6f 6e 65 22 20 73 74 61 | 74 65 20 77 61 73 20 73 |one" sta|te was s|
|00000c90| 65 74 2e 20 54 68 69 73 | 20 6d 65 61 6e 73 20 74 |et. This| means t|
|00000ca0| 68 65 09 7c 0d 20 20 09 | 7c 09 09 09 09 09 09 64 |he.|. .||......d|
|00000cb0| 65 76 69 63 65 20 77 61 | 6e 74 73 20 74 6f 20 74 |evice wa|nts to t|
|00000cc0| 72 61 6e 73 6d 69 74 20 | 6d 6f 72 65 20 64 61 74 |ransmit |more dat|
|00000cd0| 61 20 74 68 61 6e 20 74 | 68 65 20 61 70 70 6c 69 |a than t|he appli|
|00000ce0| 63 61 74 69 6f 6e 2e 09 | 7c 0d 20 20 09 7c 09 09 |cation..||. .|..|
|00000cf0| 09 09 09 09 54 68 65 20 | 69 6e 74 65 72 72 75 70 |....The |interrup|
|00000d00| 74 20 72 6f 75 74 69 6e | 65 20 73 68 6f 75 6c 64 |t routin|e should|
|00000d10| 20 68 61 6c 74 20 74 68 | 65 20 74 72 61 6e 73 66 | halt th|e transf|
|00000d20| 65 72 2e 09 09 09 09 7c | 0d 20 20 09 7c 09 6f 74 |er.....||. .|.ot|
|00000d30| 68 65 72 20 65 72 72 6f | 72 09 09 09 46 61 69 6c |her erro|r...Fail|
|00000d40| 75 72 65 20 66 72 6f 6d | 20 50 72 65 70 61 72 65 |ure from| Prepare|
|00000d50| 4d 65 6d 6f 72 79 46 6f | 72 49 4f 2e 20 54 68 65 |MemoryFo|rIO. The|
|00000d60| 20 69 6e 74 65 72 72 75 | 70 74 20 72 6f 75 74 69 | interru|pt routi|
|00000d70| 6e 65 09 09 7c 0d 20 20 | 09 7c 09 09 09 09 09 09 |ne..|. |.|......|
|00000d80| 73 68 6f 75 6c 64 20 68 | 61 6c 74 20 74 68 65 20 |should h|alt the |
|00000d90| 74 72 61 6e 73 66 65 72 | 2e 09 09 09 09 09 09 09 |transfer|........|
|00000da0| 09 09 7c 0d 20 20 09 7c | 20 54 68 65 20 53 6f 66 |..|. .|| The Sof|
|00000db0| 74 77 61 72 65 20 54 61 | 73 6b 20 71 75 65 75 65 |tware Ta|sk queue|
|00000dc0| 73 20 74 68 65 20 63 6f | 6d 6d 6f 6e 20 53 65 63 |s the co|mmon Sec|
|00000dd0| 6f 6e 64 61 72 79 20 49 | 6e 74 65 72 72 75 70 74 |ondary I|nterrupt|
|00000de0| 20 48 61 6e 64 6c 65 72 | 20 77 69 74 68 20 73 74 | Handler| with st|
|00000df0| 61 74 75 73 20 73 65 74 | 09 7c 0d 20 20 09 7c 20 |atus set|.|. .| |
|00000e00| 61 73 20 66 6f 6c 6c 6f | 77 73 3a 09 09 09 09 09 |as follo|ws:.....|
|00000e10| 09 09 09 09 09 09 09 09 | 09 09 09 09 09 7c 0d 20 |........|.....|. |
|00000e20| 20 09 7c 09 6b 50 72 65 | 70 61 72 65 4d 65 6d 6f | .|.kPre|pareMemo|
|00000e30| 72 79 52 65 73 74 61 72 | 74 20 53 75 63 63 65 73 |ryRestar|t Succes|
|00000e40| 73 20 61 66 74 65 72 20 | 70 61 72 74 69 61 6c 20 |s after |partial |
|00000e50| 70 72 65 70 61 72 61 74 | 69 6f 6e 3a 20 72 65 73 |preparat|ion: res|
|00000e60| 74 61 72 74 20 49 2f 4f | 09 09 09 7c 0d 20 20 09 |tart I/O|...|. .|
|00000e70| 7c 09 09 09 09 09 09 49 | 66 20 74 68 65 72 65 20 ||......I|f there |
|00000e80| 69 73 20 61 6e 20 65 72 | 72 6f 72 2c 20 74 68 65 |is an er|ror, the|
|00000e90| 20 53 43 53 49 20 53 63 | 72 69 70 74 20 77 69 6c | SCSI Sc|ript wil|
|00000ea0| 6c 20 65 76 65 6e 74 75 | 61 6c 6c 79 09 09 7c 0d |l eventu|ally..|.|
|00000eb0| 20 20 09 7c 09 09 09 09 | 09 09 66 61 69 6c 20 74 | .|....|..fail t|
|00000ec0| 68 72 6f 75 67 68 20 69 | 74 73 20 49 2f 4f 20 72 |hrough i|ts I/O r|
|00000ed0| 75 6e 64 6f 77 6e 20 61 | 6e 64 20 72 65 74 75 72 |undown a|nd retur|
|00000ee0| 6e 20 73 63 73 69 44 61 | 74 61 52 75 6e 45 72 72 |n scsiDa|taRunErr|
|00000ef0| 6f 72 09 7c 0d 20 20 09 | 7c 09 09 09 09 09 09 28 |or.|. .||......(|
|00000f00| 54 68 65 20 6f 6e 6c 79 | 20 65 72 72 6f 72 20 72 |The only| error r|
|00000f10| 65 74 75 72 6e 65 64 20 | 62 79 20 50 72 65 70 61 |eturned |by Prepa|
|00000f20| 72 65 4d 65 6d 6f 72 79 | 46 6f 72 49 4f 20 69 73 |reMemory|ForIO is|
|00000f30| 20 70 61 72 61 6d 45 72 | 72 09 7c 0d 20 20 09 7c | paramEr|r.|. .||
|00000f40| 09 09 09 09 09 09 77 68 | 69 63 68 20 69 73 6e 27 |......wh|ich isn'|
|00000f50| 74 20 74 6f 6f 20 75 73 | 65 66 75 6c 2e 29 09 09 |t too us|eful.)..|
|00000f60| 09 09 09 09 09 09 09 7c | 0d 09 2e 5f 5f 5f 5f 5f |.......||..._____|
|00000f70| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00000f80| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00000f90| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00000fa0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00000fb0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 2e 0d |________|______..|
|00000fc0| 2a 2f 0d 23 69 6e 63 6c | 75 64 65 20 22 4e 43 52 |*/.#incl|ude "NCR|
|00000fd0| 44 72 69 76 65 72 50 72 | 69 76 61 74 65 2e 68 22 |DriverPr|ivate.h"|
|00000fe0| 0d 2f 2a 0d 20 2a 20 54 | 68 65 20 63 75 72 72 65 |./*. * T|he curre|
|00000ff0| 6e 74 20 72 65 71 75 65 | 73 74 20 77 69 6c 6c 20 |nt reque|st will |
|00001000| 61 6c 77 61 79 73 20 62 | 65 20 72 65 66 65 72 65 |always b|e refere|
|00001010| 6e 63 65 64 20 74 68 72 | 6f 75 67 68 20 74 68 69 |nced thr|ough thi|
|00001020| 73 20 6c 6f 63 61 6c 20 | 76 61 72 69 61 62 6c 65 |s local |variable|
|00001030| 2e 0d 20 2a 2f 0d 23 64 | 65 66 69 6e 65 20 52 45 |.. */.#d|efine RE|
|00001040| 51 55 45 53 54 09 28 2a | 70 65 72 52 65 71 75 65 |QUEST.(*|perReque|
|00001050| 73 74 44 61 74 61 50 74 | 72 29 0d 23 64 65 66 69 |stDataPt|r).#defi|
|00001060| 6e 65 20 50 42 09 09 28 | 2a 28 28 49 4f 50 61 72 |ne PB..(|*((IOPar|
|00001070| 61 6d 20 2a 29 20 52 45 | 51 55 45 53 54 2e 70 62 |am *) RE|QUEST.pb|
|00001080| 29 29 0d 23 64 65 66 69 | 6e 65 20 53 43 53 49 09 |)).#defi|ne SCSI.|
|00001090| 28 2a 28 28 4e 43 52 53 | 43 53 49 50 61 72 61 6d |(*((NCRS|CSIParam|
|000010a0| 50 74 72 29 20 50 42 2e | 69 6f 4d 69 73 63 29 29 |Ptr) PB.|ioMisc))|
|000010b0| 0d 23 64 65 66 69 6e 65 | 20 49 4f 54 41 42 4c 45 |.#define| IOTABLE|
|000010c0| 09 28 52 45 51 55 45 53 | 54 2e 73 63 73 69 49 4f |.(REQUES|T.scsiIO|
|000010d0| 54 61 62 6c 65 29 0d 0d | 4f 53 45 72 72 09 09 09 |Table)..|OSErr...|
|000010e0| 09 09 09 44 6f 49 6e 69 | 74 69 61 6c 50 72 65 70 |...DoIni|tialPrep|
|000010f0| 61 72 61 74 69 6f 6e 28 | 0d 09 09 50 65 72 52 65 |aration(|...PerRe|
|00001100| 71 75 65 73 74 44 61 74 | 61 50 74 72 09 09 70 65 |questDat|aPtr..pe|
|00001110| 72 52 65 71 75 65 73 74 | 44 61 74 61 50 74 72 0d |rRequest|DataPtr.|
|00001120| 09 29 3b 0d 09 0d 2f 2a | 20 2a 20 2a 20 2a 20 2a |.);.../*| * * * *|
|00001130| 20 2a 20 2a 20 2a 20 2a | 20 2a 20 2a 20 2a 20 2a | * * * *| * * * *|
|00001140| 20 2a 20 2a 20 2a 20 2a | 20 2a 20 2a 20 2a 20 2a | * * * *| * * * *|
|00001150| 20 2a 20 2a 20 2a 20 2a | 20 2a 20 2a 20 2a 20 2a | * * * *| * * * *|
|00001160| 20 2a 20 2a 20 2a 20 2a | 20 2a 20 2a 20 2a 20 2a | * * * *| * * * *|
|00001170| 20 2a 20 2a 20 2a 20 2a | 20 2a 20 2a 0d 20 2a 20 | * * * *| * *. * |
|00001180| 50 72 65 70 61 72 65 4e | 65 77 44 4d 41 54 72 61 |PrepareN|ewDMATra|
|00001190| 6e 73 66 65 72 20 69 6e | 69 74 69 61 6c 69 7a 65 |nsfer in|itialize|
|000011a0| 73 20 61 20 75 73 65 72 | 20 49 2f 4f 20 64 61 74 |s a user| I/O dat|
|000011b0| 61 20 74 72 61 6e 73 66 | 65 72 20 72 65 71 75 65 |a transf|er reque|
|000011c0| 73 74 2e 20 49 74 20 69 | 6e 69 74 69 61 6c 69 7a |st. It i|nitializ|
|000011d0| 65 73 0d 20 2a 20 74 68 | 65 20 64 6d 61 20 70 61 |es. * th|e dma pa|
|000011e0| 72 61 6d 65 74 65 72 73 | 2c 20 63 61 6c 6c 73 20 |rameters|, calls |
|000011f0| 50 72 65 70 61 72 65 4d | 65 6d 6f 72 79 46 6f 72 |PrepareM|emoryFor|
|00001200| 49 4f 2c 20 61 6e 64 20 | 73 70 65 63 69 66 69 65 |IO, and |specifie|
|00001210| 73 20 74 68 65 20 66 69 | 72 73 74 20 44 4d 41 20 |s the fi|rst DMA |
|00001220| 61 64 64 72 65 73 73 0d | 20 2a 20 61 6e 64 20 6c |address.| * and l|
|00001230| 65 6e 67 74 68 2e 20 49 | 66 20 74 68 69 73 20 74 |ength. I|f this t|
|00001240| 72 61 6e 73 66 65 72 20 | 64 6f 65 73 20 6e 6f 74 |ransfer |does not|
|00001250| 20 73 75 70 70 6f 72 74 | 20 61 20 64 61 74 61 20 | support| a data |
|00001260| 70 68 61 73 65 2c 20 69 | 74 20 72 65 74 75 72 6e |phase, i|t return|
|00001270| 73 20 6e 6f 45 72 72 20 | 77 69 74 68 6f 75 74 0d |s noErr |without.|
|00001280| 20 2a 20 70 72 65 70 61 | 72 69 6e 67 20 61 6e 79 | * prepa|ring any|
|00001290| 74 68 69 6e 67 2e 0d 20 | 2a 2f 0d 4f 53 45 72 72 |thing.. |*/.OSErr|
|000012a0| 0d 50 72 65 70 61 72 65 | 4e 65 77 44 4d 41 54 72 |.Prepare|NewDMATr|
|000012b0| 61 6e 73 66 65 72 28 0d | 09 09 50 65 72 52 65 71 |ansfer(.|..PerReq|
|000012c0| 75 65 73 74 44 61 74 61 | 50 74 72 09 09 70 65 72 |uestData|Ptr..per|
|000012d0| 52 65 71 75 65 73 74 44 | 61 74 61 50 74 72 0d 09 |RequestD|ataPtr..|
|000012e0| 29 0d 7b 0d 09 09 4f 53 | 45 72 72 09 09 09 09 09 |).{...OS|Err.....|
|000012f0| 73 74 61 74 75 73 3b 0d | 09 09 49 4f 50 72 65 70 |status;.|..IOPrep|
|00001300| 61 72 61 74 69 6f 6e 4f | 70 74 69 6f 6e 73 09 6f |arationO|ptions.o|
|00001310| 70 74 69 6f 6e 73 3b 0d | 0d 09 09 54 72 61 63 65 |ptions;.|...Trace|
|00001320| 28 50 72 65 70 61 72 65 | 4e 65 77 44 4d 41 54 72 |(Prepare|NewDMATr|
|00001330| 61 6e 73 66 65 72 29 3b | 0d 09 09 43 4c 45 41 52 |ansfer);|...CLEAR|
|00001340| 28 49 4f 54 41 42 4c 45 | 29 3b 0d 09 09 49 4f 54 |(IOTABLE|);...IOT|
|00001350| 41 42 4c 45 2e 70 72 65 | 70 61 72 61 74 69 6f 6e |ABLE.pre|paration|
|00001360| 49 44 20 3d 20 6b 49 6e | 76 61 6c 69 64 49 44 3b |ID = kIn|validID;|
|00001370| 09 09 2f 2a 20 4d 61 72 | 6b 65 72 20 66 6f 72 20 |../* Mar|ker for |
|00001380| 43 68 65 63 6b 70 6f 69 | 6e 74 49 4f 54 61 62 6c |Checkpoi|ntIOTabl|
|00001390| 65 09 09 2a 2f 0d 09 09 | 73 77 69 74 63 68 20 28 |e..*/...|switch (|
|000013a0| 53 43 53 49 2e 64 72 69 | 76 65 72 41 63 74 69 6f |SCSI.dri|verActio|
|000013b0| 6e 29 20 7b 0d 09 09 63 | 61 73 65 20 6b 4e 43 52 |n) {...c|ase kNCR|
|000013c0| 44 72 69 76 65 72 4e 6f | 44 61 74 61 50 68 61 73 |DriverNo|DataPhas|
|000013d0| 65 3a 0d 09 09 09 73 74 | 61 74 75 73 20 3d 20 6e |e:....st|atus = n|
|000013e0| 6f 45 72 72 3b 0d 09 09 | 09 6f 70 74 69 6f 6e 73 |oErr;...|.options|
|000013f0| 20 3d 20 30 3b 0d 09 09 | 09 62 72 65 61 6b 3b 0d | = 0;...|.break;.|
|00001400| 09 09 63 61 73 65 20 6b | 4e 43 52 44 72 69 76 65 |..case k|NCRDrive|
|00001410| 72 49 6e 70 75 74 41 6c | 6c 6f 77 65 64 3a 0d 09 |rInputAl|lowed:..|
|00001420| 09 09 6f 70 74 69 6f 6e | 73 20 3d 20 6b 49 4f 49 |..option|s = kIOI|
|00001430| 73 49 6e 70 75 74 3b 0d | 09 09 09 62 72 65 61 6b |sInput;.|...break|
|00001440| 3b 0d 09 09 63 61 73 65 | 20 6b 4e 43 52 44 72 69 |;...case| kNCRDri|
|00001450| 76 65 72 4f 75 74 70 75 | 74 41 6c 6c 6f 77 65 64 |verOutpu|tAllowed|
|00001460| 3a 0d 09 09 09 6f 70 74 | 69 6f 6e 73 20 3d 20 6b |:....opt|ions = k|
|00001470| 49 4f 49 73 4f 75 74 70 | 75 74 3b 0d 09 09 09 62 |IOIsOutp|ut;....b|
|00001480| 72 65 61 6b 3b 0d 09 09 | 64 65 66 61 75 6c 74 3a |reak;...|default:|
|00001490| 0d 09 09 09 6f 70 74 69 | 6f 6e 73 20 3d 20 30 3b |....opti|ons = 0;|
|000014a0| 0d 09 09 09 73 74 61 74 | 75 73 20 3d 20 70 61 72 |....stat|us = par|
|000014b0| 61 6d 45 72 72 3b 0d 09 | 09 09 62 72 65 61 6b 3b |amErr;..|..break;|
|000014c0| 0d 09 09 7d 0d 09 09 69 | 66 20 28 6f 70 74 69 6f |...}...i|f (optio|
|000014d0| 6e 73 20 21 3d 20 30 29 | 20 7b 09 09 09 09 09 09 |ns != 0)| {......|
|000014e0| 09 09 2f 2a 20 50 72 65 | 70 61 72 61 74 69 6f 6e |../* Pre|paration|
|000014f0| 20 72 65 71 75 69 72 65 | 64 09 09 2a 2f 0d 09 09 | require|d..*/...|
|00001500| 09 50 42 2e 69 6f 41 63 | 74 43 6f 75 6e 74 20 3d |.PB.ioAc|tCount =|
|00001510| 20 30 3b 09 09 09 09 09 | 09 09 2f 2a 20 4e 6f 74 | 0;.....|../* Not|
|00001520| 68 69 6e 67 20 74 72 61 | 6e 73 66 65 72 72 65 64 |hing tra|nsferred|
|00001530| 20 79 65 74 09 2a 2f 0d | 09 09 09 49 4f 54 41 42 | yet.*/.|...IOTAB|
|00001540| 4c 45 2e 6f 70 74 69 6f | 6e 73 20 3d 0d 09 09 09 |LE.optio|ns =....|
|00001550| 09 09 28 20 6f 70 74 69 | 6f 6e 73 09 09 09 09 09 |..( opti|ons.....|
|00001560| 09 09 2f 2a 20 49 6e 70 | 75 74 20 6f 72 20 6f 75 |../* Inp|ut or ou|
|00001570| 74 70 75 74 09 09 09 2a | 2f 0d 09 09 09 09 09 7c |tput...*|/......||
|00001580| 20 28 30 20 2a 20 6b 49 | 4f 4d 75 6c 74 69 70 6c | (0 * kI|OMultipl|
|00001590| 65 52 61 6e 67 65 73 29 | 09 09 09 2f 2a 20 4e 6f |eRanges)|.../* No|
|000015a0| 20 73 63 61 74 74 65 72 | 2d 67 61 74 68 65 72 20 | scatter|-gather |
|000015b0| 6c 69 73 74 09 2a 2f 0d | 09 09 09 09 09 7c 20 28 |list.*/.|.....| (|
|000015c0| 31 20 2a 20 6b 49 4f 4c | 6f 67 69 63 61 6c 52 61 |1 * kIOL|ogicalRa|
|000015d0| 6e 67 65 73 29 09 09 09 | 2f 2a 20 4c 6f 67 69 63 |nges)...|/* Logic|
|000015e0| 61 6c 20 61 64 64 72 65 | 73 73 65 73 09 09 2a 2f |al addre|sses..*/|
|000015f0| 0d 09 09 09 09 09 7c 20 | 28 30 20 2a 20 6b 49 4f |......| |(0 * kIO|
|00001600| 4d 69 6e 69 6d 61 6c 4c | 6f 67 69 63 61 6c 4d 61 |MinimalL|ogicalMa|
|00001610| 70 70 69 6e 67 29 09 2f | 2a 20 4e 6f 20 6f 75 74 |pping)./|* No out|
|00001620| 70 75 74 20 6c 6f 67 69 | 63 61 6c 20 6d 61 70 09 |put logi|cal map.|
|00001630| 2a 2f 0d 09 09 09 09 09 | 7c 20 28 31 20 2a 20 6b |*/......|| (1 * k|
|00001640| 49 4f 53 68 61 72 65 4d | 61 70 70 69 6e 67 54 61 |IOShareM|appingTa|
|00001650| 62 6c 65 73 29 09 09 2f | 2a 20 53 68 61 72 65 20 |bles)../|* Share |
|00001660| 77 69 74 68 20 4b 65 72 | 6e 65 6c 09 09 2a 2f 0d |with Ker|nel..*/.|
|00001670| 09 09 09 09 09 7c 20 28 | 30 20 2a 20 6b 49 4f 43 |.....| (|0 * kIOC|
|00001680| 6f 68 65 72 65 6e 74 44 | 61 74 61 50 61 74 68 29 |oherentD|ataPath)|
|00001690| 09 09 09 2f 2a 20 4e 6f | 20 66 61 6e 63 79 20 64 |.../* No| fancy d|
|000016a0| 61 74 61 20 70 61 74 68 | 09 09 2a 2f 0d 09 09 09 |ata path|..*/....|
|000016b0| 09 09 29 3b 0d 09 09 09 | 49 4f 54 41 42 4c 45 2e |..);....|IOTABLE.|
|000016c0| 61 64 64 72 65 73 73 53 | 70 61 63 65 20 3d 20 52 |addressS|pace = R|
|000016d0| 45 51 55 45 53 54 2e 61 | 64 64 72 65 73 73 53 70 |EQUEST.a|ddressSp|
|000016e0| 61 63 65 49 44 3b 0d 09 | 09 09 49 4f 54 41 42 4c |aceID;..|..IOTABL|
|000016f0| 45 2e 6c 6f 67 69 63 61 | 6c 4d 61 70 70 69 6e 67 |E.logica|lMapping|
|00001700| 20 3d 20 4e 55 4c 4c 3b | 09 09 09 09 2f 2a 20 57 | = NULL;|..../* W|
|00001710| 65 20 64 6f 6e 27 74 20 | 64 6f 20 6c 6f 67 69 63 |e don't |do logic|
|00001720| 61 6c 20 78 66 65 72 09 | 2a 2f 0d 09 09 09 49 4f |al xfer.|*/....IO|
|00001730| 54 41 42 4c 45 2e 72 61 | 6e 67 65 49 6e 66 6f 2e |TABLE.ra|ngeInfo.|
|00001740| 72 61 6e 67 65 2e 62 61 | 73 65 20 3d 20 50 42 2e |range.ba|se = PB.|
|00001750| 69 6f 42 75 66 66 65 72 | 3b 0d 09 09 09 49 4f 54 |ioBuffer|;....IOT|
|00001760| 41 42 4c 45 2e 72 61 6e | 67 65 49 6e 66 6f 2e 72 |ABLE.ran|geInfo.r|
|00001770| 61 6e 67 65 2e 6c 65 6e | 67 74 68 20 3d 20 50 42 |ange.len|gth = PB|
|00001780| 2e 69 6f 52 65 71 43 6f | 75 6e 74 3b 0d 09 09 09 |.ioReqCo|unt;....|
|00001790| 49 4f 54 41 42 4c 45 2e | 67 72 61 6e 75 6c 61 72 |IOTABLE.|granular|
|000017a0| 69 74 79 20 3d 20 6b 4e | 43 52 44 72 69 76 65 72 |ity = kN|CRDriver|
|000017b0| 4d 61 78 54 72 61 6e 73 | 66 65 72 3b 0d 09 09 09 |MaxTrans|fer;....|
|000017c0| 49 4f 54 41 42 4c 45 2e | 6d 61 70 70 69 6e 67 45 |IOTABLE.|mappingE|
|000017d0| 6e 74 72 79 43 6f 75 6e | 74 20 3d 20 52 45 51 55 |ntryCoun|t = REQU|
|000017e0| 45 53 54 2e 73 63 73 69 | 4d 61 70 45 6e 74 72 69 |EST.scsi|MapEntri|
|000017f0| 65 73 3b 0d 09 09 09 49 | 4f 54 41 42 4c 45 2e 70 |es;....I|OTABLE.p|
|00001800| 68 79 73 69 63 61 6c 4d | 61 70 70 69 6e 67 20 3d |hysicalM|apping =|
|00001810| 20 52 45 51 55 45 53 54 | 2e 70 68 79 73 69 63 61 | REQUEST|.physica|
|00001820| 6c 4d 61 70 54 61 62 6c | 65 73 3b 0d 09 09 09 49 |lMapTabl|es;....I|
|00001830| 4f 54 41 42 4c 45 2e 73 | 74 61 74 65 20 3d 20 30 |OTABLE.s|tate = 0|
|00001840| 3b 09 09 09 09 09 09 09 | 2f 2a 20 43 6c 65 61 72 |;.......|/* Clear|
|00001850| 20 64 6f 6e 65 20 62 69 | 74 09 09 09 2a 2f 0d 09 | done bi|t...*/..|
|00001860| 09 09 49 4f 54 41 42 4c | 45 2e 66 69 72 73 74 50 |..IOTABL|E.firstP|
|00001870| 72 65 70 61 72 65 64 20 | 3d 20 30 3b 0d 09 09 09 |repared |= 0;....|
|00001880| 54 69 6d 65 73 74 61 6d | 70 28 27 50 4d 49 2b 27 |Timestam|p('PMI+'|
|00001890| 29 3b 0d 09 09 09 73 74 | 61 74 75 73 20 3d 20 50 |);....st|atus = P|
|000018a0| 72 65 70 61 72 65 4d 65 | 6d 6f 72 79 46 6f 72 49 |repareMe|moryForI|
|000018b0| 4f 28 26 49 4f 54 41 42 | 4c 45 29 3b 0d 09 09 09 |O(&IOTAB|LE);....|
|000018c0| 54 69 6d 65 73 74 61 6d | 70 28 27 50 4d 49 2d 27 |Timestam|p('PMI-'|
|000018d0| 29 3b 0d 09 09 09 43 68 | 65 63 6b 53 74 61 74 75 |);....Ch|eckStatu|
|000018e0| 73 28 73 74 61 74 75 73 | 2c 20 22 5c 70 50 72 65 |s(status|, "\pPre|
|000018f0| 70 61 72 65 4d 65 6d 6f | 72 79 46 6f 72 49 4f 20 |pareMemo|ryForIO |
|00001900| 69 6e 69 74 69 61 6c 22 | 29 3b 0d 09 09 09 2f 2a |initial"|);..../*|
|00001910| 0d 09 09 09 20 2a 20 54 | 68 65 20 74 65 73 74 20 |.... * T|he test |
|00001920| 66 6f 72 20 61 20 6e 6f | 6e 2d 7a 65 72 6f 20 6c |for a no|n-zero l|
|00001930| 65 6e 67 74 68 20 69 73 | 20 72 65 64 75 6e 64 61 |ength is| redunda|
|00001940| 6e 74 3a 20 50 72 65 70 | 61 72 65 4d 65 6d 6f 72 |nt: Prep|areMemor|
|00001950| 79 46 6f 72 49 4f 20 77 | 69 6c 6c 0d 09 09 09 20 |yForIO w|ill.... |
|00001960| 2a 20 72 65 74 75 72 6e | 20 61 20 70 61 72 61 6d |* return| a param|
|00001970| 45 72 72 20 69 66 20 61 | 20 7a 65 72 6f 2d 6c 65 |Err if a| zero-le|
|00001980| 6e 67 74 68 20 69 6f 52 | 65 71 43 6f 75 6e 74 20 |ngth ioR|eqCount |
|00001990| 69 73 20 70 72 6f 76 69 | 64 65 64 2e 0d 09 09 09 |is provi|ded.....|
|000019a0| 20 2a 2f 0d 09 09 09 69 | 66 20 28 73 74 61 74 75 | */....i|f (statu|
|000019b0| 73 20 3d 3d 20 6e 6f 45 | 72 72 20 26 26 20 49 4f |s == noE|rr && IO|
|000019c0| 54 41 42 4c 45 2e 6c 65 | 6e 67 74 68 50 72 65 70 |TABLE.le|ngthPrep|
|000019d0| 61 72 65 64 20 3d 3d 20 | 30 29 0d 09 09 09 09 73 |ared == |0).....s|
|000019e0| 74 61 74 75 73 20 3d 20 | 73 63 73 69 44 61 74 61 |tatus = |scsiData|
|000019f0| 52 75 6e 45 72 72 6f 72 | 3b 0d 09 09 09 2f 2a 0d |RunError|;..../*.|
|00001a00| 09 09 09 20 2a 20 41 66 | 74 65 72 20 70 72 65 70 |... * Af|ter prep|
|00001a10| 61 72 69 6e 67 20 74 68 | 65 20 64 61 74 61 20 61 |aring th|e data a|
|00001a20| 72 65 61 2c 20 69 6e 69 | 74 69 61 6c 69 7a 65 20 |rea, ini|tialize |
|00001a30| 6f 75 72 20 70 72 69 76 | 61 74 65 20 69 6e 66 6f |our priv|ate info|
|00001a40| 72 6d 61 74 69 6f 6e 2e | 0d 09 09 09 20 2a 2f 0d |rmation.|.... */.|
|00001a50| 09 09 09 73 74 61 74 75 | 73 20 3d 20 44 6f 49 6e |...statu|s = DoIn|
|00001a60| 69 74 69 61 6c 50 72 65 | 70 61 72 61 74 69 6f 6e |itialPre|paration|
|00001a70| 28 70 65 72 52 65 71 75 | 65 73 74 44 61 74 61 50 |(perRequ|estDataP|
|00001a80| 74 72 29 3b 0d 09 09 7d | 0d 09 09 72 65 74 75 72 |tr);...}|...retur|
|00001a90| 6e 20 28 73 74 61 74 75 | 73 29 3b 0d 7d 0d 0d 2f |n (statu|s);.}../|
|00001aa0| 2a 20 2a 20 2a 20 2a 20 | 2a 20 2a 20 2a 20 2a 20 |* * * * |* * * * |
|00001ab0| 2a 20 2a 20 2a 20 2a 20 | 2a 20 2a 20 2a 20 2a 20 |* * * * |* * * * |
|00001ac0| 2a 20 2a 20 2a 20 2a 20 | 2a 20 2a 20 2a 20 2a 20 |* * * * |* * * * |
|00001ad0| 2a 20 2a 20 2a 20 2a 20 | 2a 20 2a 20 2a 20 2a 20 |* * * * |* * * * |
|00001ae0| 2a 20 2a 20 2a 20 2a 20 | 2a 20 2a 20 2a 20 2a 20 |* * * * |* * * * |
|00001af0| 2a 20 2a 20 2a 0d 20 2a | 20 50 72 65 70 61 72 65 |* * *. *| Prepare|
|00001b00| 4e 65 78 74 44 4d 41 54 | 61 73 6b 20 69 73 20 74 |NextDMAT|ask is t|
|00001b10| 68 65 20 53 6f 66 74 77 | 61 72 65 54 61 73 6b 20 |he Softw|areTask |
|00001b20| 74 68 61 74 20 69 73 20 | 65 78 65 63 75 74 65 64 |that is |executed|
|00001b30| 20 69 6e 20 6f 72 64 65 | 72 20 74 6f 20 73 74 61 | in orde|r to sta|
|00001b40| 72 74 20 74 68 65 20 6e | 65 78 74 0d 20 2a 20 50 |rt the n|ext. * P|
|00001b50| 72 65 70 61 72 65 4d 65 | 6d 6f 72 79 46 6f 72 49 |repareMe|moryForI|
|00001b60| 4f 20 72 65 71 75 65 73 | 74 2e 20 54 68 65 20 73 |O reques|t. The s|
|00001b70| 65 63 6f 6e 64 61 72 79 | 20 69 6e 74 65 72 72 75 |econdary| interru|
|00001b80| 70 74 20 72 6f 75 74 69 | 6e 65 20 70 72 65 76 69 |pt routi|ne previ|
|00001b90| 6f 75 73 6c 79 20 63 68 | 65 63 6b 65 64 20 74 68 |ously ch|ecked th|
|00001ba0| 65 0d 20 2a 20 22 64 6f | 6e 65 22 20 62 69 74 2e |e. * "do|ne" bit.|
|00001bb0| 0d 20 2a 2f 0d 76 6f 69 | 64 0d 50 72 65 70 61 72 |. */.voi|d.Prepar|
|00001bc0| 65 4e 65 78 74 44 4d 41 | 54 61 73 6b 28 0d 09 09 |eNextDMA|Task(...|
|00001bd0| 76 6f 69 64 09 09 09 09 | 09 2a 70 31 2c 09 2f 2a |void....|.*p1,./*|
|00001be0| 20 70 65 72 52 65 71 75 | 65 73 74 44 61 74 61 50 | perRequ|estDataP|
|00001bf0| 74 72 09 2a 2f 0d 09 09 | 76 6f 69 64 09 09 09 09 |tr.*/...|void....|
|00001c00| 09 2a 70 32 09 09 2f 2a | 20 55 6e 75 73 65 64 09 |.*p2../*| Unused.|
|00001c10| 09 09 09 2a 2f 0d 09 29 | 0d 7b 0d 09 09 4f 53 45 |...*/..)|.{...OSE|
|00001c20| 72 72 09 09 09 09 09 73 | 74 61 74 75 73 3b 0d 23 |rr.....s|tatus;.#|
|00001c30| 64 65 66 69 6e 65 20 70 | 65 72 52 65 71 75 65 73 |define p|erReques|
|00001c40| 74 44 61 74 61 50 74 72 | 20 28 28 50 65 72 52 65 |tDataPtr| ((PerRe|
|00001c50| 71 75 65 73 74 44 61 74 | 61 50 74 72 29 20 70 31 |questDat|aPtr) p1|
|00001c60| 29 0d 0d 09 09 54 69 6d | 65 73 74 61 6d 70 28 27 |)....Tim|estamp('|
|00001c70| 53 53 49 2d 27 29 3b 0d | 09 09 54 72 61 63 65 28 |SSI-');.|..Trace(|
|00001c80| 50 72 65 70 61 72 65 4e | 65 78 74 44 4d 41 54 61 |PrepareN|extDMATa|
|00001c90| 73 6b 29 3b 0d 09 09 55 | 4e 55 53 45 44 28 70 32 |sk);...U|NUSED(p2|
|00001ca0| 29 3b 0d 09 09 2f 2a 0d | 09 09 20 2a 20 50 61 72 |);.../*.|.. * Par|
|00001cb0| 74 69 61 6c 20 70 72 65 | 70 61 72 61 74 69 6f 6e |tial pre|paration|
|00001cc0| 2e 20 54 68 69 73 20 73 | 68 6f 75 6c 64 20 62 65 |. This s|hould be|
|00001cd0| 20 65 78 74 65 6e 64 65 | 64 20 74 6f 20 68 61 6e | extende|d to han|
|00001ce0| 64 6c 65 20 65 72 72 6f | 72 73 20 66 72 6f 6d 0d |dle erro|rs from.|
|00001cf0| 09 09 20 2a 20 50 72 65 | 70 61 72 65 4d 65 6d 6f |.. * Pre|pareMemo|
|00001d00| 72 79 46 6f 72 49 4f 2e | 20 46 6f 72 20 65 78 61 |ryForIO.| For exa|
|00001d10| 6d 70 6c 65 2c 20 77 65 | 20 63 6f 75 6c 64 20 73 |mple, we| could s|
|00001d20| 74 75 66 66 20 61 6e 20 | 65 72 72 6f 72 20 73 74 |tuff an |error st|
|00001d30| 61 74 75 73 20 69 6e 74 | 6f 0d 09 09 20 2a 20 74 |atus int|o... * t|
|00001d40| 68 65 20 68 69 67 68 20 | 73 68 6f 72 74 20 77 6f |he high |short wo|
|00001d50| 72 64 20 69 6e 20 74 68 | 65 20 70 32 20 70 61 72 |rd in th|e p2 par|
|00001d60| 61 6d 65 74 65 72 2e 0d | 09 09 20 2a 2f 0d 09 09 |ameter..|.. */...|
|00001d70| 54 69 6d 65 73 74 61 6d | 70 28 27 50 61 50 2b 27 |Timestam|p('PaP+'|
|00001d80| 29 3b 0d 09 09 73 74 61 | 74 75 73 20 3d 20 50 72 |);...sta|tus = Pr|
|00001d90| 65 70 61 72 65 4d 65 6d | 6f 72 79 46 6f 72 49 4f |epareMem|oryForIO|
|00001da0| 28 26 52 45 51 55 45 53 | 54 2e 73 63 73 69 49 4f |(&REQUES|T.scsiIO|
|00001db0| 54 61 62 6c 65 29 3b 0d | 09 09 54 69 6d 65 73 74 |Table);.|..Timest|
|00001dc0| 61 6d 70 28 27 50 61 50 | 2d 27 29 3b 0d 09 09 43 |amp('PaP|-');...C|
|00001dd0| 68 65 63 6b 53 74 61 74 | 75 73 28 73 74 61 74 75 |heckStat|us(statu|
|00001de0| 73 2c 20 22 5c 70 50 72 | 65 70 61 72 65 4d 65 6d |s, "\pPr|epareMem|
|00001df0| 6f 72 79 46 6f 72 49 4f | 20 70 61 72 74 69 61 6c |oryForIO| partial|
|00001e00| 20 70 72 65 70 22 29 3b | 0d 09 09 69 66 20 28 73 | prep");|...if (s|
|00001e10| 74 61 74 75 73 20 3d 3d | 20 6e 6f 45 72 72 29 20 |tatus ==| noErr) |
|00001e20| 7b 0d 09 09 09 73 74 61 | 74 75 73 20 3d 20 44 6f |{....sta|tus = Do|
|00001e30| 49 6e 69 74 69 61 6c 50 | 72 65 70 61 72 61 74 69 |InitialP|reparati|
|00001e40| 6f 6e 28 70 65 72 52 65 | 71 75 65 73 74 44 61 74 |on(perRe|questDat|
|00001e50| 61 50 74 72 29 3b 0d 09 | 09 09 43 68 65 63 6b 53 |aPtr);..|..CheckS|
|00001e60| 74 61 74 75 73 28 73 74 | 61 74 75 73 2c 20 22 5c |tatus(st|atus, "\|
|00001e70| 70 49 6e 69 74 69 61 6c | 28 72 65 29 50 72 65 70 |pInitial|(re)Prep|
|00001e80| 61 72 61 74 69 6f 6e 22 | 29 3b 0d 09 09 7d 0d 09 |aration"|);...}..|
|00001e90| 09 2f 2a 0d 09 09 20 2a | 20 52 65 73 74 61 72 74 |./*... *| Restart|
|00001ea0| 20 49 2f 4f 20 2d 20 77 | 65 20 64 6f 20 74 68 69 | I/O - w|e do thi|
|00001eb0| 73 20 62 79 20 63 61 6c | 6c 69 6e 67 20 6f 75 72 |s by cal|ling our|
|00001ec0| 20 63 6f 6d 6d 6f 6e 20 | 53 65 63 6f 6e 64 61 72 | common |Secondar|
|00001ed0| 79 20 49 6e 74 65 72 72 | 75 70 74 20 72 6f 75 74 |y Interr|upt rout|
|00001ee0| 69 6e 65 2e 0d 09 09 20 | 2a 20 54 68 65 20 73 74 |ine.... |* The st|
|00001ef0| 61 74 75 73 20 76 61 6c | 75 65 20 74 65 6c 6c 73 |atus val|ue tells|
|00001f00| 20 74 68 65 20 53 65 63 | 6f 6e 64 61 72 79 20 49 | the Sec|ondary I|
|00001f10| 6e 74 65 72 72 75 70 74 | 20 72 6f 75 74 69 6e 65 |nterrupt| routine|
|00001f20| 20 74 6f 20 72 65 73 74 | 61 72 74 20 74 68 65 20 | to rest|art the |
|00001f30| 64 65 76 69 63 65 2e 2e | 0d 09 09 20 2a 2f 0d 09 |device..|... */..|
|00001f40| 09 28 76 6f 69 64 29 20 | 4e 43 52 51 75 65 75 65 |.(void) |NCRQueue|
|00001f50| 53 65 63 6f 6e 64 61 72 | 79 49 6e 74 65 72 72 75 |Secondar|yInterru|
|00001f60| 70 74 28 70 65 72 52 65 | 71 75 65 73 74 44 61 74 |pt(perRe|questDat|
|00001f70| 61 50 74 72 2c 20 6b 50 | 72 65 70 61 72 65 4d 65 |aPtr, kP|repareMe|
|00001f80| 6d 6f 72 79 52 65 73 74 | 61 72 74 29 3b 0d 23 75 |moryRest|art);.#u|
|00001f90| 6e 64 65 66 20 70 65 72 | 52 65 71 75 65 73 74 44 |ndef per|RequestD|
|00001fa0| 61 74 61 50 74 72 0d 7d | 0d 0d 0d 2f 2a 20 2a 20 |ataPtr.}|.../* * |
|00001fb0| 2a 20 2a 20 2a 20 2a 20 | 2a 20 2a 20 2a 20 2a 20 |* * * * |* * * * |
|00001fc0| 2a 20 2a 20 2a 20 2a 20 | 2a 20 2a 20 2a 20 2a 20 |* * * * |* * * * |
|00001fd0| 2a 20 2a 20 2a 20 2a 20 | 2a 20 2a 20 2a 20 2a 20 |* * * * |* * * * |
|00001fe0| 2a 20 2a 20 2a 20 2a 20 | 2a 20 2a 20 2a 20 2a 20 |* * * * |* * * * |
|00001ff0| 2a 20 2a 20 2a 20 2a 20 | 2a 20 2a 20 2a 20 2a 20 |* * * * |* * * * |
|00002000| 2a 0d 20 2a 20 44 6f 49 | 6e 69 74 69 61 6c 50 72 |*. * DoI|nitialPr|
|00002010| 65 70 61 72 61 74 69 6f | 6e 20 69 73 20 63 61 6c |eparatio|n is cal|
|00002020| 6c 65 64 20 66 72 6f 6d | 20 74 68 65 20 64 72 69 |led from| the dri|
|00002030| 76 65 72 20 6d 61 69 6e | 6c 69 6e 65 20 74 6f 20 |ver main|line to |
|00002040| 73 74 61 72 74 20 61 20 | 74 72 61 6e 73 66 65 72 |start a |transfer|
|00002050| 2c 20 61 6e 64 0d 20 2a | 20 66 72 6f 6d 20 74 68 |, and. *| from th|
|00002060| 65 20 73 6f 66 74 77 61 | 72 65 20 74 61 73 6b 20 |e softwa|re task |
|00002070| 74 6f 20 63 6f 6e 74 69 | 6e 75 65 20 44 4d 41 20 |to conti|nue DMA |
|00002080| 74 72 61 6e 73 66 65 72 | 73 20 61 66 74 65 72 20 |transfer|s after |
|00002090| 61 20 72 65 2d 70 72 65 | 70 61 72 61 74 69 6f 6e |a re-pre|paration|
|000020a0| 2e 0d 20 2a 2f 0d 4f 53 | 45 72 72 0d 44 6f 49 6e |.. */.OS|Err.DoIn|
|000020b0| 69 74 69 61 6c 50 72 65 | 70 61 72 61 74 69 6f 6e |itialPre|paration|
|000020c0| 28 0d 09 09 50 65 72 52 | 65 71 75 65 73 74 44 61 |(...PerR|equestDa|
|000020d0| 74 61 50 74 72 09 09 70 | 65 72 52 65 71 75 65 73 |taPtr..p|erReques|
|000020e0| 74 44 61 74 61 50 74 72 | 0d 09 29 0d 7b 0d 09 09 |tDataPtr|..).{...|
|000020f0| 4f 53 45 72 72 09 09 09 | 09 09 73 74 61 74 75 73 |OSErr...|..status|
|00002100| 3b 0d 0d 09 09 54 72 61 | 63 65 28 44 6f 49 6e 69 |;....Tra|ce(DoIni|
|00002110| 74 69 61 6c 50 72 65 70 | 61 72 61 74 69 6f 6e 29 |tialPrep|aration)|
|00002120| 3b 0d 09 09 73 74 61 74 | 75 73 20 3d 20 49 6e 69 |;...stat|us = Ini|
|00002130| 74 69 61 6c 69 7a 65 44 | 4d 41 54 72 61 6e 73 66 |tializeD|MATransf|
|00002140| 65 72 28 26 52 45 51 55 | 45 53 54 2e 73 63 73 69 |er(&REQU|EST.scsi|
|00002150| 49 4f 54 61 62 6c 65 2c | 20 30 2c 20 26 52 45 51 |IOTable,| 0, &REQ|
|00002160| 55 45 53 54 2e 64 6d 61 | 54 72 61 6e 73 66 65 72 |UEST.dma|Transfer|
|00002170| 49 6e 66 6f 29 3b 0d 09 | 09 43 68 65 63 6b 53 74 |Info);..|.CheckSt|
|00002180| 61 74 75 73 28 73 74 61 | 74 75 73 2c 20 22 5c 70 |atus(sta|tus, "\p|
|00002190| 49 6e 69 74 69 61 6c 69 | 7a 65 44 4d 41 54 72 61 |Initiali|zeDMATra|
|000021a0| 6e 73 66 65 72 22 29 3b | 0d 09 09 72 65 74 75 72 |nsfer");|...retur|
|000021b0| 6e 20 28 73 74 61 74 75 | 73 29 3b 0d 7d 0d 0d 2f |n (statu|s);.}../|
|000021c0| 2a 20 2a 20 2a 20 2a 20 | 2a 20 2a 20 2a 20 2a 20 |* * * * |* * * * |
|000021d0| 2a 20 2a 20 2a 20 2a 20 | 2a 20 2a 20 2a 20 2a 20 |* * * * |* * * * |
|000021e0| 2a 20 2a 20 2a 20 2a 20 | 2a 20 2a 20 2a 20 2a 20 |* * * * |* * * * |
|000021f0| 2a 20 2a 20 2a 20 2a 20 | 2a 20 2a 20 2a 20 2a 20 |* * * * |* * * * |
|00002200| 2a 20 2a 20 2a 20 2a 20 | 2a 20 2a 20 2a 20 2a 20 |* * * * |* * * * |
|00002210| 2a 20 2a 20 2a 0d 20 2a | 20 50 72 65 70 61 72 65 |* * *. *| Prepare|
|00002220| 4e 65 78 74 44 4d 41 20 | 68 61 6e 64 6c 65 73 20 |NextDMA |handles |
|00002230| 74 68 65 20 64 65 74 61 | 69 6c 73 20 6f 66 20 61 |the deta|ils of a|
|00002240| 20 73 69 6e 67 6c 65 20 | 44 4d 41 20 62 75 72 73 | single |DMA burs|
|00002250| 74 2e 20 48 65 72 65 2c | 20 77 65 20 61 73 73 75 |t. Here,| we assu|
|00002260| 6d 65 20 74 68 61 74 20 | 77 65 0d 20 2a 20 63 61 |me that |we. * ca|
|00002270| 6e 6e 6f 74 20 62 75 69 | 6c 64 20 61 20 70 68 79 |nnot bui|ld a phy|
|00002280| 73 69 63 61 6c 20 73 63 | 61 74 74 65 72 2d 67 61 |sical sc|atter-ga|
|00002290| 74 68 65 72 20 74 61 62 | 6c 65 2c 20 62 75 74 20 |ther tab|le, but |
|000022a0| 6d 75 73 74 20 63 6f 6e | 73 74 72 75 63 74 20 65 |must con|struct e|
|000022b0| 61 63 68 20 44 4d 41 20 | 74 72 61 6e 73 66 65 72 |ach DMA |transfer|
|000022c0| 0d 20 2a 20 62 79 20 69 | 74 73 65 6c 66 2e 20 49 |. * by i|tself. I|
|000022d0| 74 20 75 73 65 73 20 74 | 68 65 20 66 6f 6c 6c 6f |t uses t|he follo|
|000022e0| 77 69 6e 67 20 66 72 6f | 6d 20 74 68 65 20 52 45 |wing fro|m the RE|
|000022f0| 51 55 45 53 54 20 72 65 | 63 6f 72 64 3a 0d 20 2a |QUEST re|cord:. *|
|00002300| 09 52 45 51 55 45 53 54 | 2e 64 6d 61 54 72 61 6e |.REQUEST|.dmaTran|
|00002310| 73 66 65 72 49 6e 66 6f | 09 09 54 68 69 73 20 77 |sferInfo|..This w|
|00002320| 69 6c 6c 20 62 65 20 70 | 72 65 70 61 72 65 64 20 |ill be p|repared |
|00002330| 62 79 20 74 68 65 20 69 | 6e 69 74 69 61 6c 20 63 |by the i|nitial c|
|00002340| 61 6c 6c 0d 20 2a 09 09 | 09 09 09 09 09 09 61 6e |all. *..|......an|
|00002350| 64 20 75 73 65 64 20 62 | 79 20 6f 74 68 65 72 20 |d used b|y other |
|00002360| 63 61 6c 6c 73 2e 0d 20 | 2a 09 52 45 51 55 45 53 |calls.. |*.REQUES|
|00002370| 54 2e 74 68 69 73 44 4d | 41 54 72 61 6e 73 66 65 |T.thisDM|ATransfe|
|00002380| 72 09 09 54 68 65 20 72 | 65 73 75 6c 74 3a 20 6c |r..The r|esult: l|
|00002390| 65 6e 67 74 68 20 77 69 | 6c 6c 20 62 65 20 6e 6f |ength wi|ll be no|
|000023a0| 6e 2d 7a 65 72 6f 20 69 | 66 20 73 75 63 63 65 73 |n-zero i|f succes|
|000023b0| 73 66 75 6c 2e 0d 20 2a | 20 52 65 74 75 72 6e 3a |sful.. *| Return:|
|000023c0| 0d 20 2a 09 6e 6f 45 72 | 72 09 09 09 09 09 09 53 |. *.noEr|r......S|
|000023d0| 75 63 63 65 73 73 20 2d | 2d 20 73 74 61 72 74 20 |uccess -|- start |
|000023e0| 6f 72 20 63 6f 6e 74 69 | 6e 75 65 20 74 68 65 20 |or conti|nue the |
|000023f0| 74 72 61 6e 73 66 65 72 | 2e 0d 20 2a 09 73 63 73 |transfer|.. *.scs|
|00002400| 69 44 61 74 61 52 75 6e | 45 72 72 6f 72 09 09 09 |iDataRun|Error...|
|00002410| 46 61 69 6c 75 72 65 20 | 2d 20 6e 6f 20 6d 6f 72 |Failure |- no mor|
|00002420| 65 20 64 61 74 61 20 63 | 61 6e 20 62 65 20 74 72 |e data c|an be tr|
|00002430| 61 6e 73 66 65 72 65 64 | 2e 0d 20 2a 09 6f 74 68 |ansfered|.. *.oth|
|00002440| 65 72 20 65 72 72 6f 72 | 73 09 09 09 09 46 61 69 |er error|s....Fai|
|00002450| 6c 75 72 65 2e 0d 20 2a | 20 52 65 74 75 72 6e 20 |lure.. *| Return |
|00002460| 73 63 73 69 44 61 74 61 | 52 75 6e 45 72 72 6f 72 |scsiData|RunError|
|00002470| 20 69 66 20 77 65 27 72 | 65 20 61 74 20 74 68 65 | if we'r|e at the|
|00002480| 20 65 6e 64 20 6f 66 20 | 74 68 65 20 74 72 61 6e | end of |the tran|
|00002490| 73 66 65 72 2c 20 6f 72 | 20 6e 6f 45 72 72 20 69 |sfer, or| noErr i|
|000024a0| 66 20 77 65 0d 20 2a 20 | 64 69 64 20 74 68 65 20 |f we. * |did the |
|000024b0| 70 72 65 70 61 72 61 74 | 69 6f 6e 2e 20 54 68 65 |preparat|ion. The|
|000024c0| 20 50 72 69 6d 61 72 79 | 20 49 6e 74 65 72 72 75 | Primary| Interru|
|000024d0| 70 74 20 72 6f 75 74 69 | 6e 65 20 77 69 6c 6c 20 |pt routi|ne will |
|000024e0| 73 65 6e 64 20 61 20 53 | 6f 66 74 77 61 72 65 20 |send a S|oftware |
|000024f0| 49 6e 74 65 72 72 75 70 | 74 2c 0d 20 2a 20 6f 74 |Interrup|t,. * ot|
|00002500| 68 65 72 20 73 74 61 74 | 65 73 20 77 69 6c 6c 20 |her stat|es will |
|00002510| 66 61 69 6c 2e 0d 20 2a | 2f 0d 4f 53 45 72 72 0d |fail.. *|/.OSErr.|
|00002520| 50 72 65 70 61 72 65 4e | 65 78 74 44 4d 41 28 0d |PrepareN|extDMA(.|
|00002530| 09 09 50 65 72 52 65 71 | 75 65 73 74 44 61 74 61 |..PerReq|uestData|
|00002540| 50 74 72 09 09 70 65 72 | 52 65 71 75 65 73 74 44 |Ptr..per|RequestD|
|00002550| 61 74 61 50 74 72 0d 09 | 29 0d 7b 0d 09 09 4f 53 |ataPtr..|).{...OS|
|00002560| 45 72 72 09 09 09 09 09 | 73 74 61 74 75 73 3b 0d |Err.....|status;.|
|00002570| 09 09 42 6f 6f 6c 65 61 | 6e 09 09 09 09 09 69 73 |..Boolea|n.....is|
|00002580| 4c 6f 67 69 63 61 6c 54 | 72 61 6e 73 66 65 72 3b |LogicalT|ransfer;|
|00002590| 0d 0d 09 09 54 72 61 63 | 65 28 50 72 65 70 61 72 |....Trac|e(Prepar|
|000025a0| 65 4e 65 78 74 44 4d 41 | 29 3b 0d 09 09 73 74 61 |eNextDMA|);...sta|
|000025b0| 74 75 73 20 3d 20 50 72 | 65 70 61 72 65 44 4d 41 |tus = Pr|epareDMA|
|000025c0| 54 72 61 6e 73 66 65 72 | 28 0d 09 09 09 09 09 26 |Transfer|(......&|
|000025d0| 52 45 51 55 45 53 54 2e | 64 6d 61 54 72 61 6e 73 |REQUEST.|dmaTrans|
|000025e0| 66 65 72 49 6e 66 6f 2c | 0d 09 09 09 09 09 26 52 |ferInfo,|......&R|
|000025f0| 45 51 55 45 53 54 2e 74 | 68 69 73 44 4d 41 54 72 |EQUEST.t|hisDMATr|
|00002600| 61 6e 73 66 65 72 2c 0d | 09 09 09 09 09 26 69 73 |ansfer,.|.....&is|
|00002610| 4c 6f 67 69 63 61 6c 54 | 72 61 6e 73 66 65 72 0d |LogicalT|ransfer.|
|00002620| 09 09 09 09 29 3b 0d 09 | 09 69 66 20 28 73 74 61 |....);..|.if (sta|
|00002630| 74 75 73 20 3d 3d 20 6e | 6f 45 72 72 0d 09 09 20 |tus == n|oErr... |
|00002640| 26 26 20 28 69 73 4c 6f | 67 69 63 61 6c 54 72 61 |&& (isLo|gicalTra|
|00002650| 6e 73 66 65 72 20 7c 7c | 20 52 45 51 55 45 53 54 |nsfer ||| REQUEST|
|00002660| 2e 74 68 69 73 44 4d 41 | 54 72 61 6e 73 66 65 72 |.thisDMA|Transfer|
|00002670| 2e 6c 65 6e 67 74 68 20 | 3d 3d 20 30 29 29 20 7b |.length |== 0)) {|
|00002680| 0d 09 09 20 09 4c 6f 67 | 53 74 72 69 6e 67 28 22 |... .Log|String("|
|00002690| 5c 70 50 72 65 70 61 72 | 65 44 4d 41 54 72 61 6e |\pPrepar|eDMATran|
|000026a0| 73 66 65 72 20 62 6f 67 | 75 73 20 72 65 74 75 72 |sfer bog|us retur|
|000026b0| 6e 22 29 3b 0d 09 09 20 | 09 73 74 61 74 75 73 20 |n");... |.status |
|000026c0| 3d 20 70 61 72 61 6d 45 | 72 72 3b 0d 09 09 20 7d |= paramE|rr;... }|
|000026d0| 0d 23 69 66 20 31 20 26 | 26 20 55 53 45 5f 4c 4f |.#if 1 &|& USE_LO|
|000026e0| 47 5f 4c 49 42 52 41 52 | 59 0d 09 09 57 72 69 74 |G_LIBRAR|Y...Writ|
|000026f0| 65 4c 6f 67 45 6e 74 72 | 79 28 47 4c 4f 42 41 4c |eLogEntr|y(GLOBAL|
|00002700| 2e 6c 6f 67 52 65 63 6f | 72 64 50 74 72 2c 20 27 |.logReco|rdPtr, '|
|00002710| 70 44 4d 41 27 2c 0d 09 | 09 09 4c 6f 67 46 6f 72 |pDMA',..|..LogFor|
|00002720| 6d 61 74 34 28 6b 4c 6f | 67 46 6f 72 6d 61 74 53 |mat4(kLo|gFormatS|
|00002730| 69 67 6e 65 64 2c 20 6b | 4c 6f 67 46 6f 72 6d 61 |igned, k|LogForma|
|00002740| 74 41 64 64 72 65 73 73 | 2c 0d 09 09 09 09 6b 4c |tAddress|,.....kL|
|00002750| 6f 67 46 6f 72 6d 61 74 | 55 6e 73 69 67 6e 65 64 |ogFormat|Unsigned|
|00002760| 2c 20 6b 4c 6f 67 46 6f | 72 6d 61 74 53 74 72 69 |, kLogFo|rmatStri|
|00002770| 6e 67 29 2c 0d 09 09 09 | 28 73 69 67 6e 65 64 20 |ng),....|(signed |
|00002780| 6c 6f 6e 67 29 20 73 74 | 61 74 75 73 2c 0d 09 09 |long) st|atus,...|
|00002790| 09 52 45 51 55 45 53 54 | 2e 74 68 69 73 44 4d 41 |.REQUEST|.thisDMA|
|000027a0| 54 72 61 6e 73 66 65 72 | 2e 62 61 73 65 2c 0d 09 |Transfer|.base,..|
|000027b0| 09 09 52 45 51 55 45 53 | 54 2e 74 68 69 73 44 4d |..REQUES|T.thisDM|
|000027c0| 41 54 72 61 6e 73 66 65 | 72 2e 6c 65 6e 67 74 68 |ATransfe|r.length|
|000027d0| 2c 0d 09 09 09 22 5c 70 | 4e 65 78 74 44 4d 41 22 |,...."\p|NextDMA"|
|000027e0| 0d 09 09 29 3b 0d 23 65 | 6e 64 69 66 0d 09 09 69 |...);.#e|ndif...i|
|000027f0| 66 20 28 73 74 61 74 75 | 73 20 21 3d 20 6e 6f 45 |f (statu|s != noE|
|00002800| 72 72 29 0d 09 09 09 52 | 45 51 55 45 53 54 2e 74 |rr)....R|EQUEST.t|
|00002810| 68 69 73 44 4d 41 54 72 | 61 6e 73 66 65 72 2e 6c |hisDMATr|ansfer.l|
|00002820| 65 6e 67 74 68 20 3d 20 | 30 3b 0d 09 09 72 65 74 |ength = |0;...ret|
|00002830| 75 72 6e 20 28 73 74 61 | 74 75 73 29 3b 0d 7d 0d |urn (sta|tus);.}.|
|00002840| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002850| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002860| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002870| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002880| 00 00 01 00 00 00 01 54 | 00 00 00 54 00 00 00 46 |.......T|...T...F|
|00002890| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000028a0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000028b0| 13 44 72 69 76 65 72 50 | 72 65 70 52 65 71 75 65 |.DriverP|repReque|
|000028c0| 73 74 2e 63 02 00 00 00 | 54 45 58 54 4d 50 43 43 |st.c....|TEXTMPCC|
|000028d0| 00 00 54 45 58 54 4d 50 | 43 43 01 00 ff ff ff ff |..TEXTMP|CC......|
|000028e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000028f0| 00 00 ab 87 97 69 00 00 | 27 c0 00 00 01 9a 00 00 |.....i..|'.......|
|00002900| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002910| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002920| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002930| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002940| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002950| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002960| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002970| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002980| 00 00 00 48 00 0a 43 6f | 75 72 69 65 72 00 00 00 |...H..Co|urier...|
|00002990| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000029a0| 00 00 00 00 00 00 00 03 | 00 04 00 61 00 27 01 b8 |........|...a.'..|
|000029b0| 02 86 00 61 00 27 01 b8 | 02 86 ac 62 57 7b 00 00 |...a.'..|...bW{..|
|000029c0| 09 9a 00 00 09 a3 00 00 | 06 50 01 00 00 00 00 04 |........|.P......|
|000029d0| 00 01 00 01 00 00 01 00 | 00 00 01 54 00 00 00 54 |........|...T...T|
|000029e0| 00 00 00 46 01 0b 6a 88 | 2c ce 00 00 00 1c 00 46 |...F..j.|,......F|
|000029f0| 00 01 4d 50 53 52 00 00 | 00 12 4d 57 42 42 00 00 |..MPSR..|..MWBB..|
|00002a00| 00 1e 03 ed ff ff 00 00 | 00 00 00 00 00 00 03 f0 |........|........|
|00002a10| ff ff 00 00 00 4c 00 00 | 00 00 00 00 00 00 00 00 |.....L..|........|
|00002a20| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002a30| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002a40| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002a50| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002a60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002a70| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
+--------+-------------------------+-------------------------+--------+--------+